/**
 * Project SearchEngine
 */


#ifndef _WEBPAGES_H
#define _WEBPAGES_H
#include <string>
#include <map>
#include <vector>
#include <unordered_map>

#include "SimHash.h"
#include "../dict/split_tool.h"
#include "../DirScanner.h"


using std::map;
using std::string;
using std::vector;
using std::unordered_map;

class Configuration;

#ifndef _RSSITEM_H
#define _RSSITEM_H

class RssItem {
public:
    string title;
    string link;
    string description;
    string content;
};

#endif //_RSSITEM_H
                                   
                                   


class WebPages {
public: 
using Frequency = unordered_map<string, int>;    
/**
 * @param dirScanner
 */
WebPages(Configuration& conf);
~WebPages();
    
void creat();
    
/**
 * @param i
 */
string getPage(int i);
size_t getSize(); 
/**
 * @param i
 */
    
void store();
    
/**
 * @param i
 */
map<int, map<string,double>> getTfidf();
    
   
private: 
    Configuration& _conf;
    DirScanner _dirScanner;
    vector<RssItem> _pages;
    vector<Frequency> _termFrequency;//  存储每篇文章的单词的频率。  每篇文章 所有单词 ： 出现个数
    Frequency _docFrequency;// 包含某word的page的数量。  单词 ： 出现在文章的个数
    map<int, map<string, double>> _idf;
    SimHash _simHash;
    SplitTool* _splictTool; 
    
void addPage(const string& filename);    
/**
 * @param s
 */
string dealHTML(const string & s);

void calculateTfidf();
void removeDuplicate();

//str->content  
void addTermFrequency(const string & str);
void addDocFrequency();
};

#endif //_WEBPAGES_H
